package com.un.ebs.product.service;

import com.un.ebs.product.domain.ProductClassAttr;
import com.un.ebs.product.dto.ProductClassAttrAddDto;
import com.un.ebs.product.dto.ProductClassAttrUpdateDto;
import com.un.ebs.product.dto.ProductClassAttrVO;
import com.un.ebs.product.dto.SortChangeDto;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author liubo
 * @since 2019-09-16
 */
public interface ProductClassAttrService {

    /**
     * 新增属性
     *
     * @param req
     */
    void add(ProductClassAttrAddDto req);

    /**
     * 修改属性
     *
     * @param req
     */
    void update(ProductClassAttrUpdateDto req);

    /**
     * 查询属性详情
     *
     * @param id
     * @return
     */
    ProductClassAttr queryById(String id);

    /**
     * 查询指定classId下的所有子class id.
     *
     * @param parentId
     * @return
     */
    List<String> queryClassChildIds(String parentId);

    /**
     * 按指定的classId查询属性定义
     *
     * @param classId
     * @return
     */
    List<ProductClassAttr> queryByClassId(String classId);

    List<ProductClassAttrVO> queryViewByClassId(String classId);

    /**
     * 按指定的productId查询类别属性
     *
     * @param productId
     * @return
     */
    List<ProductClassAttr> queryByProductId(String productId);

    /**
     * 删除属性
     *
     * @param id
     */
    void delete(String id);

    /**
     * 排序
     *
     * @param id
     * @param index
     */
    void changeSort(String id, int index);

    /**
     * 排序
     *
     * @param req
     */
    void changeSort(List<SortChangeDto> req);
}
